package adventure.room;

import player.Player;
import adventure.placeable.*;
import adventure.placeable.trigger.Trigger;

/**
 *
 * @author Michael Hanns
 *
 */
public interface RoomManager {

    public int sx();

    public int sy();

    public int sz();

    public boolean roomExists(int x, int y, int z);

    public boolean roomRepops(int x, int y, int z);

    public boolean tickPassed(int x, int y, int z);

    public String getRoomTitle(int x, int y, int z);

    public String getRoomDescription(int x, int y, int z);

    public String getRoomYouSee(int x, int y, int z, int playerID);

    public int getSpawnLevel(int x, int y, int z);

    public String getPlaceableDescription(int x, int y, int z, String obj);

    public String getPaths(int x, int y, int z);

    public boolean isClosed(int x, int y, int z, char dir);

    public boolean isLocked(int x, int y, int z, char dir);

    public boolean isBlocked(int x, int y, int z, char dir);

    public boolean isLightPresent(int x, int y, int z);

    public void enterRoom(Player p);

    public void leaveRoom(Player p);

    public void movePlayer(Player p, char dir);
    
    public String tripTriggers(Player p, String input);

    public boolean updatePlayerSpawn(Player p);

    public void open(int x, int y, int z, char dir);

    public boolean closeableExit(int x, int y, int z, char dir);

    public void close(int x, int y, int z, char dir);

    public void unlock(int x, int y, int z, char dir);
    
    public boolean roomHasContent(int x, int y, int z);

    public boolean roomHasItem(int x, int y, int z, int val, int quant);

    public boolean roomHasMobile(int x, int y, int z, int val, int quant);

    public boolean roomHasTrigger(int x, int y, int z, int val, int quant);

    public int getCurrencyContents(int x, int y, int z);

    public Item takeRoomItem(int x, int y, int z, String item);
    
    public void addItemToRoom(Item i, int x, int y, int z);
    
    public void addMobileToRoom(Mobile m, int x, int y, int z);
    
    public void addTriggerToRoom(Trigger t, int x, int y, int z);
    
    public int takeRoomCurrency(int x, int y, int z, Player p);

    public int takeRoomCurrency(int x, int y, int z, Player p, int quant);

    public int dropRoomCurrency(int x, int y, int z, Player p);

    public int dropRoomCurrency(int x, int y, int z, Player p, int quant);

    public Object[] lootRoomContainer(int x, int y, int z, String container);

    public Mobile getRoomMobile(int x, int y, int z, String mobile);

    public String getRoomMobileName(int x, int y, int z, String mobile);
    
    public Mobile[] getRoomVendors(int x, int y, int z);

    public int getRoomPlayer(int x, int y, int z, String player);

    public String aggroMobsAttack(Player p);
    
    public String[][] aggroGroupsAttack(Player p);
    
    public void stopFighting(Player p);

    public String decayCorpses(int x, int y, int z);
    
    public String decayTempItems(int x, int y, int z);

    public void aggroMobs(int x, int y, int z);

    public Mobile[] getAggroMobs(int player, int x, int y, int z);
}
